package com.leo;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.SelectionMode;
import javafx.scene.control.cell.TextFieldListCell;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

/**
 * @ClassName ListViewDemo
 * @Description
 * @Author wangss
 * @date 2020.06.09 11:04
 * @Version 1.0
 */
public class ListViewDemo extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        AnchorPane an = new AnchorPane();
        an.setStyle("-fx-background-color: #e7eeea");
        Scene scene = new Scene(an);

        ObservableList<String> list = FXCollections.observableArrayList();
        list.add("wangss - 18");
        list.add("ztt - 16");
        list.add("xyy - 14");
        list.add("xyy1 - 14");
        list.add("xyy2 - 14");
        list.add("xyy3 - 14");
        list.add("xyy4 - 14");
        list.add("xyy5 - 14");
        list.add("xyy6 - 14");
        list.add("xyy7 - 14");
        list.add("xyy8 - 14");
        list.add("xyy9 - 14");
        list.add("xyy10 - 14");
        list.add("xyy11 - 14");
        list.add("xyy12 - 14");
        list.add("xyy13 - 14");
        list.add("xyy14 - 14");
        list.add("xyy15 - 14");
        list.add("xyy16 - 14");
        list.add("xyy17 - 14");
        list.add("xyy18 - 14");

        ListView<String> listView = new ListView<>();
        listView.setPlaceholder(new Label("没有数据"));
        listView.setPrefWidth(300d);
        listView.setPrefWidth(300d);

        // 调整方向
//        listView.setOrientation(Orientation.HORIZONTAL);

        // 设置多选模式
        listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

        listView.setItems(list);

        Button button = new Button("button");

        an.getChildren().addAll(button, listView);

        AnchorPane.setTopAnchor(listView, 50d);
        AnchorPane.setLeftAnchor(listView, 100d);

        primaryStage.setScene(scene);
        primaryStage.setTitle("ListView");
        primaryStage.setWidth(600d);
        primaryStage.setHeight(600d);
        primaryStage.setResizable(false);
        primaryStage.show();

        button.setOnAction(event -> {
            // 这是改变数据
//            list.add("12345");

            // 单选，并定位
            /*listView.getSelectionModel().select(18);
            listView.scrollTo(18);
            */

            // 多选
            listView.getSelectionModel().selectIndices(3, 5);
            System.out.println(listView.getSelectionModel().getSelectedItems());

            listView.requestFocus();
        });

        // 单选事件
        listView.getSelectionModel().selectedIndexProperty().addListener((observable, oldValue, newValue) -> {

        });
        listView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {

        });

        // 允许修改
        listView.setEditable(true);
        listView.setCellFactory(TextFieldListCell.forListView());
    }
}
